package com.hmk.blogboot.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {
    /*
    *
    * MD5加密方法
    * str参数表示要加密字符串
    * 方法返回值表示加密后的字符串
    * */
    public  static String code(String str){
        try{
            //创建MessageDigest对象，MessageDigest对象作用提供应用程序信息摘要算法：如MD5 和 SHA
            MessageDigest md = MessageDigest.getInstance("MD5");
            //md5信息摘要算法调用update(byte[] input)进行数据传输
            md.update(str.getBytes());
            //md5摘要算法调用digest()方法计算摘要
            byte[] byteDigest = md.digest();
            int i;
            //创建StringBuffer类型对象
            StringBuffer buf = new StringBuffer("");
            //处理计算结果
            for(int offset=0; offset<byteDigest.length;offset++){
                //i接收计算摘要的字节数据
                i=byteDigest[offset];
                if(i<0) {
                    i += 256;
                }
                if(i<16){
                    buf.append("0");
                }
                buf.append(Integer.toHexString(i));
            }
            //32位加密
            return buf.toString();
            //16位加密
            //return buf.toString().substring(8,24);

        }catch(NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        System.out.println(code("123456"));
    }

}
